package leetcode_400;

/**
 *@author 周杨
 *SumOfTwoIntegers_371 不用+ 进行两个数的加
 *describe:AC 100% 用二进制加法
 *2018年7月9日 下午1:17:52
 */
public class SumOfTwoIntegers_371 {
	
	public static void main(String[] args) {
		System.out.println(new SumOfTwoIntegers_371().getSum(2, 1));
	}
	  /**
	 * describe:二进制运算加法
	 * 2018年7月9日 下午1:14:09
	 */
	public int getSum(int a, int b) {
		  if(a == 0 ) return b;
	        if(b == 0 ) return a;
	        int sum = 0 , carry;
	        while(b != 0){
					
	            sum = a^b;  //异或运算  相同为1 不同为0
	            carry = (a&b) <<1;  //carry 把哪一位都为1的保留  要进位 直到都为0
	            a = sum;
	            b = carry;
	        }
	        
	        return sum;
	  }
}
